                     Hacking Save States for Final Fantasy v.0.02
                                by Bastard Son

TABLE OF CONTENTS
        MISSION STATEMENT
        WHAT YOU'LL NEED
        RECCOMENDED HEX EDITORS
        NOTICE ON FILES
        NOTICE ON TERMINOLOGY
        GETTING STARTED
        INTRODUCTION TO THE RECORD
        EDITING YOUR GOLD
        EDITING YOUR SPELLS
        NOW TELL ME WHERE THE FUCKING RECORDS ARE
        MAGIC
        CLASSES
        WEAPONS
        ARMOR
        INVENTORY
        LAST WORD AND CONTACT INFO
        LEGAL NOTICE

MISSION STATEMENT

The purpose of this document is not to teach you to become a hacker.  This is
meant to let any fool (such as myself) with no previous knowledge of hacking
modify their NESticle save states with a minimum fuss, and without spending
valuable time hunting down the offset for every little detail that is to be
modified.  If you want a general hacking guide, go to ~ac2k~'s page.  (I
can't remember the URL, but if you enter "One-stop NES shop" into Infoseek,
it'll be the first match)  Follow the links and pick the doc that suits you
best.  I'm writing this with MS-DOS Edit.  If you want a different format,
such as Microsoft WordPad or HTML, email me (see Contact Info below)

WHAT YOU'LL NEED                            

NESticle                                    
A Final Fantasy ROM
A Hex Editor
A Saved State file (.ST*)

I'll refer to the Final Fantasy ROM as FF1.NES, although yours might be called
FF1E.NES or FF.NES.  If you don't like it, take it up with my lawyer.

RECOMMENDED HEX EDITORS:

For Windows, you should use Hex Workshop.  It allows you to do a byte-by-byte
comparison of any 2 files, which proves handy when you're trying to track
down an offset.  Problem is, you'll have to pay a registration fee or
download an illegal reg key.  (I'm not condoning reg keys.  I'm not brave
enough)
For DOS, use HEXposure by SnowBro.  It's free, and comes with a .TBL file
which will allow you to edit you characters' names without painstakingly
working out hex values for the letters of the alphabet.  (Problem is, you have
to make your own .TBL if you want to edit, say, Final Fantasy II)

NOTICE ON FILES

I'm going to be using HEXposure and FF1.NES for this tutorial.  If you use
another hex editor, such as ZAPIT, substitute the command 'HEXPOSE' for the
name of your hex editor's executable file (i.e. Hworks32.exe or Zapit.exe),
and totally ignore the shit about .TBL files.  You'll have to work out the
hex equivalents of the letters of the alphabet by hand.  Good luck.

NOTICE ON TERMINOLOGY

When I say a 'byte', I'm referring to a 2-digit hexadecimal number.  Some
hex editors, such as Zapit and HEXposure have their hexadecimal panes divided
into bytes, so you'll see lines that look like this:
00 00 FF A8 31 63 00 FD AF BC 0C 30 06 23 39 8C
Other editors, such as Hex Workshop, will have their hex panes divided into
'words', which is a fancy way of saying 2 bytes.  So the same line, in Hex
Workshop, will look like this:
0000 FFA8 3163 00FD AFBC 0C30 0623 398C
Most values in Final Fantasy are bytes, but some are words.  HP, for instance,
is a word value, reversed (notation 1WR for 1 word reversed).  If you want
999 HP, convert 999 to hex, which is 3E7.  Then, take the last byte and put it
first, and vice-versa.  The number you'll put in your hex slot should be
E7 03 (E703 for Hex Workshop users).  If HP were a 2WR value, you'd put in
E7 03 00 00 to get 999.

GETTING STARTED

Rename HEXposure's FF1E.TBL to match the name of your FF ROM (i.e., I'll rename
mine to FF1.TBL).  Make sure HEXPOSE.EXE, FF1.NES, FF1.TBL, FF1.STA, and NESticle
are all in the same directory, then run hexpose with the command 'hexpose ff1.sta
(If you're using a windows editor, you'll have to load the state file after
loading the hex editor).  Now, using the arrow keys, move your cursor to the
address 0100.  If your first character is a Fighter, the hex byte should read
00.  Try changing it to 06.  Save and exit, then run NESticle and load your
saved state.  Press START, and presto, your fighter has just become a Knight!

INTRODUCTION TO THE RECORD

Your character's information is stored in the form of a record.  If you know
where  your character's record starts, you can find any data you need.  For
instance, experience is a 2WR located in the 7th byte of the record.  So if
your character's record starts at 01C0, their experience should be the bytes
01C7-01CA.  (The last character's record starts at 01C0.  Here is the layout
of a character's record (all unknown bytes are shown as ?):

CLASS (1B),?,NAME (2W),EXP (2WR), HP (1WR), HP MAX (1WR),?,?
STR (1B),AGL (1B), VIT (1B), LUCK (1B),?,EXP FOR LEVEL UP (1WR), WEAPONS (2WR), ARMOR (2WR)
DMG (1B),HIT% (1B), ABSORB (1B), EVADE% (1B),?,?,LEVEL (1B)

You may have noticed that I used 3 lines of 16 bytes each.  That is because most
hex editors display 16 bytes, so you won't need to count if you want to change your
STR value, for instance.  It's the first byte on the second line of the record.
When editing your level, enter a value of 1 less than the hex equivalent of the level
you want to be at.  So if you want level 50, 50d=32h-1=31h, so enter a value of 31.

EDITING YOUR GOLD

Your gold is a 1WR situated at 001C and 001D.  Change it to FF FF, and enjoy
your everlasing wealth.

EDITING YOUR SPELLS

A character's spells should be 64 bytes long.  Each 'level' of spells is a
2 word value, with each byte equalling one spell (there are 4 spells per level,
and you can carry 3, so you can put any value in the extra byte of the second
word.  So if you wanted to have CURE, FOG, and RUSE, go to your White Mage's
magic record, and enter 01 03 04 00 in the first 2 words of the record.  The
first 'line' (a line being 16 bytes, remember) will contain the values for
levels 1-4, and the second line will contain the values for levels 5-8.  The
first 8 bytes of the third line is your spell points.  If you've got 3 shots
left in level 1, 2 in level 2, and nothing else, your first 8 bytes should be
03 02 00 00 00 00 00 00.
The next 8 bytes is your spell point max.  This is what your spell points will
reset to if you go to an in.  If you want to max out your magic ability, fill
that third line with 09's.  The fourth and final line should be zeroes.

NOW TELL ME WHERE THE FUCKING RECORDS ARE!!!

Okay, okay, let's get to the good part already.

CHARACTER PLACE         CHARACTER RECORD        MAGIC RECORD
Top character           0100                    0300
Second character        0140                    0340
Third character         0180                    0380
Bottom character        01C0                    03C0
GOLD                    001C

HOW DO I GET THE SHIT I WANT

Here's the hex values you enter at the appropriate offset to get what you want.

MAGIC                            
(NOTE:  The numbers along the top are the values you enter, and the numbers
along the side are the level numbers.  LIF2 is NOT a level 1 spell)

LEVEL   01      02      03      04      05      06      07      08
1       CURE    HARM    FOG     RUSE    FIRE    SLEP    LOCK    LIT
2       LAMP    MUTE    ALIT    INVS    ICE     DARK    TMPR    SLOW
3       CUR2    HRM2    AFIR    HEAL    FIR2    HOLD    LIT2    LOK2
4       PURE    FEAR    AICE    AMUT    SLP2    FAST    CONF    ICE2
5       CUR3    LIFE    HRM3    HEL2    FIR3    BANE    WARP    SLO2
6       SOFT    EXIT    FOG2    INV2    LIT3    RUB     QAKE    STUN
7       CUR4    HRM4    ARUB    HEL3    ICE3    BRAK    SABR    BLND
8       LIF2    FADE    WALL    XFER    NUKE    STOP    ZAP!    XXXX

CLASSES

CLASS           VALUE
Fighter         00
Thief           01
Bl. Belt        02
Red Mage        03
White Mage      04
Black Mage      05
Knight          06
Ninja           07
Master          08
Red Wizard      09
White Wizard    0A
Black Wizard    0B

(if you enter other values, you get wierd shit.  If you enter 0C, your
character will become a sword.  It's really fucked up)

WEAPONS

(Nk=nunchuckus, Kf=knife, Sd=sword, Sf=staff, Hr=Hammer, Ax=axe)

WEAPON          VALUE   WEAPON          VALUE   WEAPON          VALUE
Wooden Nk       01      Small Kf        02      Wooden Sf       03
Rapier          04      Iron Hr         05      Short Sd        06
Hand Ax         07      Scimitar        08      Iron Nk         09
Large Kf        0A      Iron Sf         0B      Sabre           0C
Long Sd         0D      Great Ax        0E      Falchon         0F
Silver Kf       10      Silver Sd       11      Silver Hr       12
Silver Ax       13      Flame Sd        14      Ice Sd          15
Dragon Sd       16      Giant Sd        17      Sun Sd          18
Coral Sd        19      Were Sd         1A      Rune Sd         1B
Power Sf        1C      Light Ax        1D      Heal Sf         1E
Mage Sf         1F      Defense         20      Wizard Sf       21
Vorpal          22      CatClaw         23      Thor Hr         24
Bane Sd         25      Katana          26      Xcalber         27
Masmune         28

ARMOR

(Ar=armor, Sh=shield, O=ring, St=shirt, Hm=helm, Gt=gauntlet (glove))

ARMOR           VALUE   ARMOR           VALUE   ARMOR           VALUE
Cloth           01      Wooden Ar       02      Chain Ar        03
Iron Ar         04      Steel Ar        05      Silver Ar       06
Flame Ar        07      Ice Ar          08      Opal Ar         09
Dragon Ar       0A      Copper O        0B      Silver O        0C
Gold O          0D      Opal O          0E      White St        0F
Black St        10      Wooden Sh       11      Iron Sh         12
Silver Sh       13      Flame Sh        14      Ice Sh          15
Opal Sh         16      Aegis Sh        17      Buckler         18
ProCape         19      Cap             1A      Wooden Hm       1B
Iron Hm         1C      Silver Hm       1D      Opal Hm         1E
Heal Helm       1F      Ribbon          20      Gloves          21
Copper Gt       22      Iron Gt         23      Silver Gt       24
Zeus Gt         25      Power Gt        26      Opal Gt         27
ProRing         28

The weapons and armor will have a different value when equipped.  The Masmune
is A8 when equipped.  You might just have to add 80, but I don't give a crusty
shit, so I never checked

INVENTORY

(i.e., the Lute, Floater, and assorted shit)

I haven't bothered with this part, at least not yet, and don't plan to in
the near future.  See the next section if you're not satisfied with that.

LAST WORD AND CONTACT INFO

Many of you will have difficulty with my explanations.  The terminology I've
used (the 1WR's, etc.) lends readily to confusion, since it's just names I've
constructed on the fly.  I'm not a hacker, and I make no apologies for that.
You're welcome to write your own guide.

If you have any information to add to this guide, email me (below).  If you
know what any of the offsets I've listed as '?' in the character record
section, email me and let me know what's up so I can put it into the guide.

You can email me at the following address:
bastardson@zdnetmail.com

LEGAL NOTICE

Thou shalt not kill


